package com.app.oral.dao

import com.app.oral.model.UserSession
import org.apache.ibatis.annotations.Mapper

@Mapper
interface UserSessionMapper {

    /**
     * 插入会话记录
     */
    fun insert(session: UserSession): Int

    /**
     * 根据sessionKey查找会话
     */
    fun findBySessionKey(sessionKey: String): UserSession?

    /**
     * 根据openid查找会话列表
     */
    fun findByOpenid(openid: String): List<UserSession>

    /**
     * 根据用户ID查找会话列表
     */
    fun findByUserId(userId: Long): List<UserSession>

    /**
     * 更新会话最后访问时间
     */
    fun updateLastAccessTime(sessionKey: String): Int

    /**
     * 失效指定会话
     */
    fun deactivateSession(sessionKey: String): Int

    /**
     * 根据openid失效会话
     */
    fun deactivateByOpenid(openid: String): Int

    /**
     * 根据用户ID失效会话
     */
    fun deactivateByUserId(userId: Long): Int

    /**
     * 删除过期会话
     */
    fun deleteExpiredSessions(): Int

    /**
     * 统计活跃会话数量
     */
    fun countActiveSessions(openid: String): Int
}